package ar.pmt.gwt.client.common.view;

 import ar.pmt.vista.beans.PaginacionBean;

import com.google.gwt.user.client.ui.Composite;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.Store;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.PagingToolbar;
import com.gwtext.client.widgets.ToolTip;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.NumberField;
import com.gwtext.client.widgets.form.event.FieldListenerAdapter;
import com.gwtext.client.widgets.grid.ColumnModel;
import com.gwtext.client.widgets.grid.GridPanel;
import com.gwtext.client.widgets.grid.event.GridCellListener;
import com.gwtextux.client.widgets.grid.plugins.GridSearchPlugin;

public class BuscadorRapido extends Composite {
	
	private GridPanel gridBuscador = new GridPanel(); 
	private GridSearchPlugin gridSearch = new GridSearchPlugin(GridSearchPlugin.TOP);
	private PagingToolbar pagingToolbar = new PagingToolbar(); 
	private Store store;
	
	
	
	public BuscadorRapido(String titulo, ColumnModel tabla, final Store data, final boolean paginacion, final int itemPorPagina) {
		

///---GridPanel---///	
	     store = data;
	     gridBuscador.setStore(store);  
	     
         gridBuscador.setFrame(true);  
         gridBuscador.setStripeRows(true);  
         gridBuscador.setHeight(350);  
         gridBuscador.setWidth(600);  
         gridBuscador.setTitle(titulo);  
   
///---GridSearchPlugin---///
		 Toolbar topToolbar = new Toolbar();  
		 topToolbar.addFill();  
		 gridBuscador.setTopToolbar(topToolbar);  
		 gridSearch.setMode(GridSearchPlugin.REMOTE); 
		 gridBuscador.addPlugin(gridSearch); 
		 
		 
///---PagingToolbar---///	 		 
		 if(paginacion){
			  pagingToolbar.setStore(store);
	          pagingToolbar.setPageSize(itemPorPagina);
	          pagingToolbar.setDisplayInfo(true);  
	          pagingToolbar.setDisplayMsg("Result {0} - {1} of {2}");  
	          pagingToolbar.setEmptyMsg("No records to display");  
	    
	          NumberField pageSizeField = new NumberField();  
	          pageSizeField.setWidth(40);  
	          pageSizeField.setSelectOnFocus(true);  
	          pageSizeField.addListener(new FieldListenerAdapter() {  
	              public void onSpecialKey(Field field, EventObject e) {  
	                  if (e.getKey() == EventObject.ENTER) {  
	                      int pageSize = Integer.parseInt(field.getValueAsString());  
	                      pagingToolbar.setPageSize(pageSize);  
	                  }  
	              }  
	          });  
	          ToolTip toolTip = new ToolTip("Enter page size");  
	          toolTip.applyTo(pageSizeField);
	          pagingToolbar.addField(pageSizeField); 
	          //pagingToolbar.setPagingParamNames("d", "a");
	          gridBuscador.setBottomToolbar(pagingToolbar);
		 }
		 
//---Mapping---// 
		  	gridBuscador.setColumnModel(tabla);  
		              
///---ON load Grid---//
         gridBuscador.addListener(new PanelListenerAdapter() {
			public void onRender(Component component) {
				if(paginacion){
					store.load(0, itemPorPagina);
				}
				else{
					store.load();
				}
			}
		});

        initWidget(gridBuscador);
		
	}
	
	public void setAutoExpandColumn(String idColumna){		
		 gridBuscador.setAutoExpandColumn(idColumna);  
	}
	
	public void setGridSize(int height, int width){		
		 gridBuscador.setHeight(height);  
	     gridBuscador.setWidth(width);  
	}
	
	public void addGridCellListener(GridCellListener listner){
		gridBuscador.addGridCellListener(listner);
	}
	
	public void setLocalMode(boolean local){
		if(local){
			gridSearch.setMode(GridSearchPlugin.LOCAL);
		}
		else {
			gridSearch.setMode(GridSearchPlugin.REMOTE);
		}		
	}
	
	
}
